/**
 * babel中插件的应用顺序是：
 * 1. 先 plugin 再 preset，plugin 从左到右，
 * 2. presets 从右到左，这样 plugin-transform-runtime 是在 preset-env 前面的
 */
module.exports = {
    // 对象形式
    // targets:{ chrome: '60', firefox: '60', ie: '11', safari: '10', edge: '17' },
    // 编译输出平台：决定是否需要引入对应的polyfill，也可以配置‘.browserslist’文件
    // targets: '> 0.5%, last 2 versions, Firefox ESR, not dead, not IE 11',
    presets:[
        [
            '@babel/preset-env',
            {
                'useBuiltIns': 'usage',
                'corejs': { version: '3.16', proposals: true },

                'loose': false, // 默认是严格模式，class转换后只能被new操作
                'modules': false, // 关闭模块转换，以便使用tree shaking、sideEffects等
            }
        ],
        // 注意：react、vue都支持jsx，在配置presets时，两者不能同时存在
        // '@babel/preset-react', // react
        '@vue/babel-preset-jsx' // vue jsx
    ],
    plugins: [
        // [ 
        //     "@babel/plugin-transform-runtime",  // 抽取公共的runtime helpers
        //     {
        //         "corejs": 3,
        //         // helpers: true
        //     }
        // ],
        // This plugin is included in @babel/preset-env, in ES2020
        // '@babel/plugin-syntax-dynamic-import', // 动态import语法
    ]
    // https://babeljs.io/docs/en/assumptions
    // "assumptions": {
    //     "noClassCalls": true
    // },
}